home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 3 / Info_Mac_1994-01.iso / Development / General / GCC 1.37.1r15 / Machines / tm-sun3.h < prev    next >
Text File  |  1990-03-14  |  6KB  |  175 lines

  1. /* Definitions of target machine for GNU compiler.  Sun 68000/68020 version.
  2.    Copyright (C) 1987, 1988 Free Software Foundation, Inc.
  3.  
  4. This file is part of GNU CC.
  5.  
  6. GNU CC is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 1, or (at your option)
  9. any later version.
  10.  
  11. GNU CC is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GNU CC; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20. /* This comment is here to see if it will keep Sun's cpp from dying.  */
  21.  
  22. #include "tm-m68k.h"
  23.  
  24. /* See tm-m68k.h.  7 means 68020 with 68881.  */
  25.  
  26. #ifndef TARGET_DEFAULT
  27. #define TARGET_DEFAULT 7
  28. #endif
  29.  
  30. /* Define __HAVE_FPA__ or __HAVE_68881__ in preprocessor,
  31.    according to the -m flags.
  32.    This will control the use of inline 68881 insns in certain macros.
  33.    Also inform the program which CPU this is for.  */
  34.  
  35. #if TARGET_DEFAULT & 02
  36.  
  37. /* -m68881 is the default */
  38. #define CPP_SPEC \
  39. "%{!msoft-float:%{mfpa:-D__HAVE_FPA__ }%{!mfpa:-D__HAVE_68881__ }}\
  40. %{!ansi:%{m68000:-Dmc68010}%{mc68000:-Dmc68010}%{!mc68000:%{!m68000:-Dmc68020}}}"
  41.  
  42. #else
  43. #if TARGET_DEFAULT & 0100
  44.  
  45. /* -mfpa is the default */
  46. #define CPP_SPEC \
  47. "%{!msoft-float:%{m68881:-D__HAVE_68881__ }%{!m68881:-D__HAVE_FPA__ }}\
  48. %{!ansi:%{m68000:-Dmc68010}%{mc68000:-Dmc68010}%{!mc68000:%{!m68000:-Dmc68020}}}"
  49.  
  50. #else
  51.  
  52. /* -msoft-float is the default */
  53. #define CPP_SPEC \
  54. "%{m68881:-D__HAVE_68881__ }%{mfpa:-D__HAVE_FPA__ }\
  55. %{!ansi:%{m68000:-Dmc68010}%{mc68000:-Dmc68010}%{!mc68000:%{!m68000:-Dmc68020}}}"
  56.  
  57. #endif
  58. #endif
  59.  
  60. /* Prevent error on `-sun3' option.  */
  61.  
  62. #define CC1_SPEC "%{sun3:}"
  63.  
  64. /* -m68000 requires special flags to the assembler.  */
  65.  
  66. #define ASM_SPEC \
  67.  "%{m68000:-mc68010}%{mc68000:-mc68010}%{!mc68000:%{!m68000:-mc68020}}"
  68.  
  69. /* Names to predefine in the preprocessor for this target machine.  */
  70.  
  71. #define CPP_PREDEFINES "-Dmc68000 -Dsun -Dunix"
  72.  
  73. /* STARTFILE_SPEC to include sun floating point initialization
  74.    This is necessary (tr: Sun does it) for both the m68881 and the fpa
  75.    routines.
  76.    Note that includes knowledge of the default specs for gcc, ie. no
  77.    args translates to the same effect as -m68881
  78.    I'm not sure what would happen below if people gave contradictory
  79.    arguments (eg. -msoft-float -mfpa) */
  80.  
  81. #if TARGET_DEFAULT & 0100
  82. /* -mfpa is the default */
  83. #define STARTFILE_SPEC                    \
  84.   "%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}    \
  85.    %{m68881:Mcrt1.o%s}                    \
  86.    %{msoft-float:Fcrt1.o%s}                \
  87.    %{!m68881:%{!msoft-float:Wcrt1.o%s}}"
  88. #else
  89. #if TARGET_DEFAULT & 2
  90. /* -m68881 is the default */
  91. #define STARTFILE_SPEC                    \
  92.   "%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}    \
  93.    %{mfpa:Wcrt1.o%s}                    \
  94.    %{msoft-float:Fcrt1.o%s}                \
  95.    %{!mfpa:%{!msoft-float:Mcrt1.o%s}}"
  96. #else
  97. /* -msoft-float is the default */
  98. #define STARTFILE_SPEC                    \
  99.   "%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}    \
  100.    %{m68881:Mcrt1.o%s}                    \
  101.    %{mfpa:Wcrt1.o%s}                    \
  102.    %{!m68881:%{!mfpa:Fcrt1.o%s}}"
  103. #endif
  104. #endif
  105.  
  106. /* Specify library to handle `-a' basic block profiling.  */
  107.  
  108. /* Specify library to handle `-a' basic block profiling.
  109.    Control choice of libm.a (if user says -lm)
  110.    based on fp arith default and options.  */
  111.  
  112. #if TARGET_DEFAULT & 0100
  113. /* -mfpa is the default */
  114. #define LIB_SPEC "%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p} \
  115. %{a:/usr/lib/bb_link.o} %{g:-lg} \
  116. %{msoft-float:-L/usr/lib/fsoft}%{m68881:-L/usr/lib/f68881}\
  117. %{!msoft_float:%{!m68881:-L/usr/lib/ffpa}}"
  118. #else
  119. #if TARGET_DEFAULT & 2
  120. /* -m68881 is the default */
  121. #define LIB_SPEC "%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p} \
  122. %{a:/usr/lib/bb_link.o} %{g:-lg} \
  123. %{msoft-float:-L/usr/lib/fsoft}%{!msoft-float:%{!mfpa:-L/usr/lib/f68881}}\
  124. %{mfpa:-L/usr/lib/ffpa}"
  125. #else
  126. /* -msoft-float is the default */
  127. #define LIB_SPEC "%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p} \
  128. %{a:/usr/lib/bb_link.o} %{g:-lg} \
  129. %{!m68881:%{!mfpa:-L/usr/lib/fsoft}}%{m68881:-L/usr/lib/f68881}\
  130. %{mfpa:-L/usr/lib/ffpa}"
  131. #endif
  132. #endif
  133.  
  134. /* Provide required defaults for linker -e and -d switches.
  135.    Also, it is hard to debug with shared libraries,
  136.    so don't use them if going to debug.  */
  137.  
  138. #define LINK_SPEC "%{!e*:-e start} -dc -dp %{g:-Bstatic} %{static:-Bstatic} %{-Bstatic}"
  139.  
  140. /* Every structure or union's size must be a multiple of 2 bytes.  */
  141.  
  142. #define STRUCTURE_SIZE_BOUNDARY 16
  143.  
  144. /* This is BSD, so it wants DBX format.  */
  145.  
  146. #define DBX_DEBUGGING_INFO
  147.  
  148. /* This is how to output an assembler line defining a `double' constant.  */
  149.  
  150. #undef ASM_OUTPUT_DOUBLE
  151. #define ASM_OUTPUT_DOUBLE(FILE,VALUE)                    \
  152.   (isinf ((VALUE))                            \
  153.    ? fprintf (FILE, "\t.double 0r%s99e999\n", ((VALUE) > 0 ? "" : "-")) \
  154.    : fprintf (FILE, "\t.double 0r%.20e\n", (VALUE)))
  155.  
  156. /* This is how to output an assembler line defining a `float' constant.  */
  157.  
  158. #undef ASM_OUTPUT_FLOAT
  159. #define ASM_OUTPUT_FLOAT(FILE,VALUE)                    \
  160.   (isinf ((VALUE))                            \
  161.    ? fprintf (FILE, "\t.single 0r%s99e999\n", ((VALUE) > 0 ? "" : "-")) \
  162.    : fprintf (FILE, "\t.single 0r%.20e\n", (VALUE)))
  163.  
  164. #undef ASM_OUTPUT_FLOAT_OPERAND
  165. #define ASM_OUTPUT_FLOAT_OPERAND(FILE,VALUE)                \
  166.   (isinf ((VALUE))                            \
  167.    ? fprintf (FILE, "#0r%s99e999", ((VALUE) > 0 ? "" : "-")) \
  168.    : fprintf (FILE, "#0r%.9g", (VALUE)))
  169.  
  170. #undef ASM_OUTPUT_DOUBLE_OPERAND
  171. #define ASM_OUTPUT_DOUBLE_OPERAND(FILE,VALUE)                \
  172.   (isinf ((VALUE))                            \
  173.    ? fprintf (FILE, "#0r%s99e999", ((VALUE) > 0 ? "" : "-")) \
  174.    : fprintf (FILE, "#0r%.20g", (VALUE)))
  175.